12. 离散分布可视化

可视化分段连续概率分布

现在是挑战时间!

Sebastian 在介绍均匀连续概率分布之后,为你呈现了一个表示人口出生概率的分段连续方程。你将使用 Python 编写一个分段连续概率密度类函数。

你得到的结果会像这样:

离散概率分布可视化

本练习可学习的技能

  • 计算离散概率分布
  • 对列表值进行归一化
  • for 循环

介绍

下面是挑战时间。写一个函数,可根据给定的间隔和总概率列表,计算出每个条形的高度。请记住,所有条形的面积总和应该是总概率。

下面是一个输入和输出的例子:

  • 从凌晨 5 点到上午 10 点发生车祸的可能性是从午夜到凌晨 5 点的 5 倍。
  • 从上午 10 点到下午 4 点发生车祸的可能性是从午夜到凌晨 5 点的 3 倍。
  • 从下午 4 点到晚上 9 点发生车祸的可能性是从午夜到凌晨 5 点的 6 倍。
  • 从晚上 9 点到午夜发生车祸的可能性是从午夜到凌晨 5 点的 1/2。
  • 在任一天发生事故的概率是 0.05。

输入应该是下面这样的:

时间采用 24 小时制。
hour_intervals = [0, 5, 10, 16, 21, 24]

relative_probabilities = [1, 5, 3, 6, 0.5]

total_probability = 0.05

输出为每个条形的高度:

[0.0006451612903225806,
 0.0032258064516129032,
 0.0016129032258064516,
 0.003870967741935484,
 0.0005376344086021505]

请记住,probability_intervals 变量中的值表示相对概率。条形的面积代表实际概率。发生事故的总概率是 0.05。这意味着所有条形的面积加起来应该为 0.05,刚好是发生事故的概率。你可以使用这些信息来计算每个条形的面积,然后你只需要将每个条形除以对应的时间间隔即可。最终得出条形的高度。

如果你想要对结果进行可视化,如图所示,看起来会是这样的:

但函数应该是通用的。对于每个区间的相对概率和总概率的任何值,它应该能够接收任意的数字列表。在尝试编写程序之前,你可以用笔和纸来计算你所期望的结果。这样可以帮助你理清编程的逻辑。

本课的下一部分中,你可以找到相应练习。